home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / var / db / pkg / dev-lang / perl-5.8.7-r3 / perl-5.8.7-r3.ebuild < prev    next >
Text File  |  2006-04-25  |  20KB  |  663 lines

  1. # Copyright 1999-2006 Gentoo Foundation
  2. # Distributed under the terms of the GNU General Public License v2
  3. # $Header: /var/cvsroot/gentoo-x86/dev-lang/perl/perl-5.8.7-r3.ebuild,v 1.12 2006/01/21 21:07:15 corsair Exp $
  4.  
  5. inherit eutils flag-o-matic toolchain-funcs multilib
  6.  
  7. # The slot of this binary compat version of libperl.so
  8. PERLSLOT="1"
  9.  
  10. SHORT_PV="${PV%.*}"
  11. MY_P="perl-${PV/_rc/-RC}"
  12. DESCRIPTION="Larry Wall's Practical Extraction and Reporting Language"
  13. S="${WORKDIR}/${MY_P}"
  14. SRC_URI="ftp://ftp.perl.org/pub/CPAN/src/${MY_P}.tar.bz2"
  15. HOMEPAGE="http://www.perl.org/"
  16. LIBPERL="libperl$(get_libname ${PERLSLOT}.${SHORT_PV})"
  17.  
  18. LICENSE="Artistic GPL-2"
  19. SLOT="0"
  20. KEYWORDS="alpha amd64 arm hppa ia64 m68k mips ppc ~ppc-macos ppc64 s390 sh sparc x86"
  21. IUSE="berkdb debug doc gdbm ithreads perlsuid build minimal"
  22. PERL_OLDVERSEN="5.8.0 5.8.2 5.8.4 5.8.5 5.8.6"
  23.  
  24. DEPEND="berkdb? ( sys-libs/db )
  25.     gdbm? ( >=sys-libs/gdbm-1.8.3 )
  26.     >=sys-devel/libperl-${PV}
  27.     !<perl-core/ExtUtils-MakeMaker-6.17
  28.     !<perl-core/File-Spec-0.87
  29.     !<perl-core/Test-Simple-0.47-r1"
  30.  
  31. RDEPEND=">=sys-devel/libperl-${PV}
  32.     berkdb? ( sys-libs/db )
  33.     gdbm? ( >=sys-libs/gdbm-1.8.3 )"
  34.  
  35. PDEPEND="app-admin/perl-cleaner"
  36.  
  37. pkg_setup() {
  38.     # I think this should rather be displayed if you *have* 'ithreads'
  39.     # in USE if it could break things ...
  40.     if use ithreads
  41.     then
  42.         ewarn "PLEASE NOTE: You are compiling ${MY_P} with"
  43.         ewarn "interpreter-level threading enabled."
  44.         ewarn "Threading is not supported by all applications "
  45.         ewarn "that compile against perl. You use threading at "
  46.         ewarn "your own discretion. "
  47.         epause 5
  48.     fi
  49.  
  50.     if use minimal
  51.     then
  52.         ewarn "You have the minimal USE flag set. The resulting"
  53.         ewarn "perl is stripped of most of its module functionality"
  54.         ewarn "and is intended for minmal use case where you need"
  55.         ewarn "just the perl interpreter, no extras."
  56.     fi
  57.  
  58.     if [ ! -f "${ROOT}/usr/$(get_libdir)/${LIBPERL}" ]
  59.     then
  60.         # Make sure we have libperl installed ...
  61.         eerror "Cannot find ${ROOT}/usr/$(get_libdir)/${LIBPERL}!  Make sure that you"
  62.         eerror "have sys-libs/libperl installed properly ..."
  63.         die "Cannot find ${ROOT}/usr/$(get_libdir)/${LIBPERL}!"
  64.     fi
  65. }
  66.  
  67. src_unpack() {
  68.     unpack ${A}
  69.  
  70.     # Get -lpthread linked before -lc.  This is needed
  71.     # when using glibc >= 2.3, or else runtime signal
  72.     # handling breaks.  Fixes bug #14380.
  73.     # <rac@gentoo.org> (14 Feb 2003)
  74.     # reinstated to try to avoid sdl segfaults 03.10.02
  75.     cd ${S}; epatch ${FILESDIR}/${PN}-prelink-lpthread.patch
  76.  
  77.     # Patch perldoc to not abort when it attempts to search
  78.     # nonexistent directories; fixes bug #16589.
  79.     # <rac@gentoo.org> (28 Feb 2003)
  80.  
  81.     cd ${S}; epatch ${FILESDIR}/${PN}-perldoc-emptydirs.patch
  82.  
  83.     # this lays the groundwork for solving the issue of what happens
  84.     # when people (or ebuilds) install different versiosn of modules
  85.     # that are in the core, by rearranging the @INC directory to look
  86.     # site -> vendor -> core.
  87.     cd ${S}; epatch ${FILESDIR}/${PN}-reorder-INC.patch
  88.  
  89.     # some well-intentioned stuff in http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&selm=Pine.SOL.4.10.10205231231200.5399-100000%40maxwell.phys.lafayette.edu
  90.     # attempts to avoid bringing cccdlflags to bear on static
  91.     # extensions (like DynaLoader).  i believe this is
  92.     # counterproductive on a Gentoo system which has both a shared
  93.     # and static libperl, so effectively revert this here.
  94.     cd ${S}; epatch ${FILESDIR}/${PN}-picdl.patch
  95.  
  96.     # Configure makes an unwarranted assumption that /bin/ksh is a
  97.     # good shell. This patch makes it revert to using /bin/sh unless
  98.     # /bin/ksh really is executable. Should fix bug 42665.
  99.     # rac 2004.06.09
  100.     cd ${S}; epatch ${FILESDIR}/${PN}-noksh.patch
  101.  
  102.     # this one only affects sparc64, as best weeve and rac can tell,
  103.     # but seems sane for all linux.  we don't have to worry about
  104.     # drifting into obscure SysV non-posix semantics, and the current
  105.     # code in IO.xs that checks for this sort of thing dies in LDAP on
  106.     # sparc64.
  107.  
  108.     #epatch ${FILESDIR}/${PN}-nonblock.patch
  109.  
  110.     # since we build in non-world-writeable portage directories, none
  111.     # of the .t sections of the original version of this patch matter
  112.     # much.  the PPPort section is apparently obsolete, because i see
  113.     # no /tmp in there now.  ditto on perlbug.SH, which has secure
  114.     # tempfile handling if resources are present.  originally from bug
  115.     # 66360.
  116.  
  117.     epatch ${FILESDIR}/${P}-tempfiles.patch
  118.  
  119.     # We do not want the build root in the linked perl module's RUNPATH, so
  120.     # strip paths containing PORTAGE_TMPDIR if its set.  This is for the
  121.     # MakeMaker module, bug #105054.
  122.     epatch ${FILESDIR}/${PN}-5.8.7-MakeMaker-RUNPATH.patch
  123.  
  124.     # Starting and hopefully ending with 5.8.7 we observe stack 
  125.     # corruption with the regexp handling in perls DynaLoader code 
  126.     # with ssp enabled. This become fatal during compile time so we 
  127.     # temporally disable ssp on two regexp files till upstream has a 
  128.     # chance to work it out. Bug #97452
  129.     [[ -n $(test-flags -fno-stack-protector) ]] && \
  130.         epatch "${FILESDIR}"/${P}-regexp-nossp.patch
  131.  
  132.     # Bug 114113
  133.     cd ${S}; epatch ${FILESDIR}/perl-exp_intwrap.patch
  134.  
  135. }
  136.  
  137. src_configure() {
  138.  
  139.     # some arches and -O do not mix :)
  140.     use arm && replace-flags -O? -O1
  141.     use ppc && replace-flags -O? -O1
  142.     use ia64 && replace-flags -O? -O1
  143.     # Perl has problems compiling with -Os in your flags with glibc
  144.     use elibc_uclibc || replace-flags "-Os" "-O2"
  145.     # This flag makes compiling crash in interesting ways
  146.     filter-flags -malign-double
  147.     # Fixes bug #97645
  148.     use ppc && filter-flags -mpowerpc-gpopt
  149.  
  150.     export LC_ALL="C"
  151.     local myconf=""
  152.  
  153.     case ${CHOST} in
  154.         *-freebsd*) osname="freebsd" ;;
  155.         *-netbsd*) osname="netbsd" ;;
  156.         *-openbsd*) osname="openbsd" ;;
  157.         *-darwin*) osname="darwin" ;;
  158.  
  159.         *) osname="linux" ;;
  160.     esac
  161.  
  162.     if use ithreads
  163.     then
  164.         einfo "using ithreads"
  165.         mythreading="-multi"
  166.         myconf="-Dusethreads ${myconf}"
  167.         myarch=$(get_abi_CHOST)
  168.         myarch="${myarch%%-*}-${osname}-thread"
  169.     else
  170.         myarch=$(get_abi_CHOST)
  171.         myarch="${myarch%%-*}-${osname}"
  172.     fi
  173.  
  174.     local inclist=$(for v in $PERL_OLDVERSEN; do echo -n "$v $v/$myarch$mythreading "; done)
  175.  
  176.     # allow either gdbm to provide ndbm (in <gdbm/ndbm.h>) or db1
  177.  
  178.     myndbm='U'
  179.     mygdbm='U'
  180.     mydb='U'
  181.  
  182.     if use gdbm
  183.     then
  184.         mygdbm='D'
  185.         myndbm='D'
  186.     fi
  187.     if use berkdb
  188.     then
  189.         mydb='D'
  190.         has_version '=sys-libs/db-1*' && myndbm='D'
  191.     fi
  192.  
  193.     myconf="${myconf} -${myndbm}i_ndbm -${mygdbm}i_gdbm -${mydb}i_db"
  194.  
  195.     if use mips
  196.     then
  197.         # this is needed because gcc 3.3-compiled kernels will hang
  198.         # the machine trying to run this test - check with `Kumba
  199.         # <rac@gentoo.org> 2003.06.26
  200.         myconf="${myconf} -Dd_u32align"
  201.     fi
  202.  
  203.     if use perlsuid
  204.     then
  205.         myconf="${myconf} -Dd_dosuid"
  206.         ewarn "You have enabled Perl's suid compile. Please"
  207.         ewarn "read http://perldoc.com/perl5.8.2/INSTALL.html#suidperl"
  208.         epause 3
  209.     fi
  210.  
  211.     if use debug
  212.     then
  213.         CFLAGS="${CFLAGS} -g"
  214.     fi
  215.  
  216.     if use sparc
  217.     then
  218.         myconf="${myconf} -Ud_longdbl"
  219.     fi
  220.  
  221.     if use alpha && "$(tc-getCC)" == "ccc"
  222.     then
  223.         ewarn "Perl will not be built with berkdb support, use gcc if you needed it..."
  224.         myconf="${myconf} -Ui_db -Ui_ndbm"
  225.     fi
  226.  
  227.     [ -n "${ABI}" ] && myconf="${myconf} -Dusrinc=$(get_ml_incdir)"
  228.  
  229.     [[ ${ELIBC} == "FreeBSD" ]] && myconf="${myconf} -Dlibc=/usr/lib/libc.a"
  230.  
  231.     if [[ $(get_libdir) != "lib" ]] ; then
  232.         myconf="${myconf} -Dlibpth='/usr/local/$(get_libdir) /$(get_libdir) \
  233.         /usr/$(get_libdir)'"
  234.     fi
  235.  
  236.     sh Configure -des \
  237.         -Darchname="${myarch}" \
  238.         -Dcccdlflags='-fPIC' \
  239.         -Dccdlflags='-rdynamic' \
  240.         -Dcc="$(tc-getCC)" \
  241.         -Dprefix='/usr' \
  242.         -Dvendorprefix='/usr' \
  243.         -Dsiteprefix='/usr' \
  244.         -Dlocincpth=' ' \
  245.         -Doptimize="${CFLAGS}" \
  246.         -Duselargefiles \
  247.         -Dd_semctl_semun \
  248.         -Dscriptdir=/usr/bin \
  249.         -Dman1dir=/usr/share/man/man1 \
  250.         -Dman3dir=/usr/share/man/man3 \
  251.         -Dinstallman1dir=/usr/share/man/man1 \
  252.         -Dinstallman3dir=/usr/share/man/man3 \
  253.         -Dman1ext='1' \
  254.         -Dman3ext='3pm' \
  255.         -Dinc_version_list="$inclist" \
  256.         -Dcf_by='Gentoo' \
  257.         -Ud_csh \
  258.         ${myconf} || die "Unable to configure"
  259. }
  260.  
  261. src_compile() {
  262.  
  263.     # would like to bracket this with a test for the existence of a
  264.     # dotfile, but can't clean it automatically now.
  265.  
  266.     src_configure
  267.  
  268.     emake -j1 || die "Unable to make"
  269. }
  270.  
  271. src_test() {
  272.     use elibc_uclibc && export MAKEOPTS="${MAKEOPTS} -j1"
  273.     emake -i test CCDLFLAGS= || die "test failed"
  274. }
  275.  
  276. src_install() {
  277.  
  278.     export LC_ALL="C"
  279.  
  280.     # Need to do this, else apps do not link to dynamic version of
  281.     # the library ...
  282.     local coredir="/usr/lib/perl5/${PV}/${myarch}${mythreading}/CORE"
  283.     dodir ${coredir}
  284.     dosym ../../../../../$(get_libdir)/${LIBPERL} ${coredir}/${LIBPERL}
  285.     dosym ../../../../../$(get_libdir)/${LIBPERL} ${coredir}/libperl$(get_libname ${PERLSLOT})
  286.     dosym ../../../../../$(get_libdir)/${LIBPERL} ${coredir}/libperl$(get_libname)
  287.  
  288.     # Fix for "stupid" modules and programs
  289.     dodir /usr/lib/perl5/site_perl/${PV}/${myarch}${mythreading}
  290.  
  291.     local installtarget=install
  292.     if use minimal || use build ; then
  293.         installtarget=install.perl
  294.     fi
  295.     make DESTDIR="${D}" ${installtarget} || die "Unable to make ${installtarget}"
  296.  
  297.     # 2004.07.28 rac
  298.  
  299.     # suidperl has had a history of security trouble, and the
  300.     # perldelta has recommended against using it for a while.  genone
  301.     # alerted me to the fact that the hardlinks aren't carrying
  302.     # through the staging directory, and we end up with four copies of
  303.     # perl, basically.  two normal, two suid.  fix this up here, and
  304.     # delete suidperl entirely.  if this causes outrage, here's where
  305.     # to fix.
  306.  
  307.     # Moved to a use flag enablement - bug 64823 - mcummings
  308.     #rm ${D}/usr/bin/sperl${PV}
  309.     #rm ${D}/usr/bin/suidperl
  310.     rm ${D}/usr/bin/perl
  311.     ln -s perl${PV} ${D}/usr/bin/perl
  312.  
  313.     cp -f utils/h2ph utils/h2ph_patched
  314.     epatch ${FILESDIR}/${PN}-h2ph-ansi-header.patch
  315.  
  316.  
  317.     LD_LIBRARY_PATH=. ./perl -Ilib utils/h2ph_patched \
  318.         -a -d ${D}/usr/lib/perl5/${PV}/${myarch}${mythreading} <<EOF
  319. asm/termios.h
  320. syscall.h
  321. syslimits.h
  322. syslog.h
  323. sys/ioctl.h
  324. sys/socket.h
  325. sys/time.h
  326. wait.h
  327. EOF
  328.  
  329.     # This is to fix a missing c flag for backwards compat
  330.     for i in `find ${D}/usr/lib/perl5 -iname "Config.pm"`;do
  331.         sed -e "s:ccflags=':ccflags='-DPERL5 :" \
  332.             -e "s:cppflags=':cppflags='-DPERL5 :" \
  333.             ${i} > ${i}.new &&\
  334.             mv ${i}.new ${i} || die "Sed failed"
  335.     done
  336.  
  337.     # A poor fix for the miniperl issues
  338.     dosed 's:./miniperl:/usr/bin/perl:' /usr/lib/perl5/${PV}/ExtUtils/xsubpp
  339.     fperms 0444 /usr/lib/perl5/${PV}/ExtUtils/xsubpp
  340.     dosed 's:./miniperl:/usr/bin/perl:' /usr/bin/xsubpp
  341.     fperms 0755 /usr/bin/xsubpp
  342.  
  343.     # This removes ${D} from Config.pm and .packlist
  344.     for i in `find ${D} -iname "Config.pm"` `find ${D} -iname ".packlist"`;do
  345.         einfo "Removing ${D} from ${i}..."
  346.         sed -e "s:${D}::" ${i} > ${i}.new &&\
  347.             mv ${i}.new ${i} || die "Sed failed"
  348.     done
  349.  
  350.     # Note: find out from psm why we would need/want this.
  351.     # ( use berkdb && has_version '=sys-libs/db-1*' ) || 
  352.     #    find ${D} -name "*NDBM*" | xargs rm -f
  353.  
  354.     dodoc Changes* Artistic Copying README Todo* AUTHORS
  355.  
  356.     if use doc
  357.     then
  358.         # HTML Documentation
  359.         # We expect errors, warnings, and such with the following.
  360.  
  361.         dodir /usr/share/doc/${PF}/html
  362.         ./perl installhtml \
  363.             --podroot='.' \
  364.             --podpath='lib:ext:pod:vms' \
  365.             --recurse \
  366.             --htmldir="${D}/usr/share/doc/${PF}/html" \
  367.             --libpods='perlfunc:perlguts:perlvar:perlrun:perlop'
  368.     fi
  369.     cd `find ${D} -name Path.pm|sed -e 's/Path.pm//'`
  370.     # CAN patch in bug 79685
  371.     epatch ${FILESDIR}/${P}-CAN-2005-0448-rmtree.patch
  372.  
  373.     if use minimal || use build ; then
  374.         src_remove_extra_files
  375.     fi
  376.  
  377. }
  378.  
  379. src_remove_extra_files()
  380. {
  381.     local prefix="./usr" # ./ is important
  382.     local bindir="${prefix}/bin"
  383.     local perlroot="${prefix}/lib/perl5" # perl installs per-arch dirs
  384.     local prV="${perlroot}/${PV}"
  385.     # myarch and mythreading are defined inside src_configure()
  386.     local prVA="${prV}/${myarch}${mythreading}"
  387.  
  388.     # I made this list from the Mandr*, Debian and ex-Connectiva perl-base list
  389.     # Then, I added several files to get GNU autotools running
  390.     # FIXME: should this be in a separated file to be sourced?
  391.     local MINIMAL_PERL_INSTALL="
  392.     ${bindir}/h2ph
  393.     ${bindir}/perl
  394.     ${bindir}/perl${PV}
  395.     ${bindir}/pod2man
  396.     ${prV}/attributes.pm
  397.     ${prV}/AutoLoader.pm
  398.     ${prV}/autouse.pm
  399.     ${prV}/base.pm
  400.     ${prV}/bigint.pm
  401.     ${prV}/bignum.pm
  402.     ${prV}/bigrat.pm
  403.     ${prV}/blib.pm
  404.     ${prV}/bytes_heavy.pl
  405.     ${prV}/bytes.pm
  406.     ${prV}/Carp/Heavy.pm
  407.     ${prV}/Carp.pm
  408.     ${prV}/charnames.pm
  409.     ${prV}/Class/Struct.pm
  410.     ${prV}/constant.pm
  411.     ${prV}/diagnostics.pm
  412.     ${prV}/DirHandle.pm
  413.     ${prV}/Exporter/Heavy.pm
  414.     ${prV}/Exporter.pm
  415.     ${prV}/ExtUtils/Command.pm
  416.     ${prV}/ExtUtils/Constant.pm
  417.     ${prV}/ExtUtils/Embed.pm
  418.     ${prV}/ExtUtils/Installed.pm
  419.     ${prV}/ExtUtils/Install.pm
  420.     ${prV}/ExtUtils/Liblist.pm
  421.     ${prV}/ExtUtils/MakeMaker.pm
  422.     ${prV}/ExtUtils/Manifest.pm
  423.     ${prV}/ExtUtils/Mkbootstrap.pm
  424.     ${prV}/ExtUtils/Mksymlists.pm
  425.     ${prV}/ExtUtils/MM_Any.pm
  426.     ${prV}/ExtUtils/MM_MacOS.pm
  427.     ${prV}/ExtUtils/MM.pm
  428.     ${prV}/ExtUtils/MM_Unix.pm
  429.     ${prV}/ExtUtils/MY.pm
  430.     ${prV}/ExtUtils/Packlist.pm
  431.     ${prV}/ExtUtils/testlib.pm
  432.     ${prV}/ExtUtils/Miniperl.pm
  433.     ${prV}/ExtUtils/Command/MM.pm
  434.     ${prV}/ExtUtils/Constant/Base.pm
  435.     ${prV}/ExtUtils/Constant/Utils.pm
  436.     ${prV}/ExtUtils/Constant/XS.pm
  437.     ${prV}/ExtUtils/Liblist/Kid.pm
  438.     ${prV}/ExtUtils/MakeMaker/bytes.pm
  439.     ${prV}/ExtUtils/MakeMaker/vmsish.pm
  440.     ${prV}/fields.pm
  441.     ${prV}/File/Basename.pm
  442.     ${prV}/File/Compare.pm
  443.     ${prV}/File/Copy.pm
  444.     ${prV}/File/Find.pm
  445.     ${prV}/FileHandle.pm
  446.     ${prV}/File/Path.pm
  447.     ${prV}/File/Spec.pm
  448.     ${prV}/File/Spec/Unix.pm
  449.     ${prV}/File/stat.pm
  450.     ${prV}/filetest.pm
  451.     ${prVA}/attrs.pm
  452.     ${prVA}/auto/attrs
  453.     ${prVA}/auto/Cwd/Cwd$(get_libname)
  454.     ${prVA}/auto/Data/Dumper/Dumper$(get_libname)
  455.     ${prVA}/auto/DynaLoader/dl_findfile.al
  456.     ${prVA}/auto/Fcntl/Fcntl$(get_libname)
  457.     ${prVA}/auto/File/Glob/Glob$(get_libname)
  458.     ${prVA}/auto/IO/IO$(get_libname)
  459.     ${prVA}/auto/POSIX/autosplit.ix
  460.     ${prVA}/auto/POSIX/fstat.al
  461.     ${prVA}/auto/POSIX/load_imports.al
  462.     ${prVA}/auto/POSIX/POSIX.bs
  463.     ${prVA}/auto/POSIX/POSIX$(get_libname)
  464.     ${prVA}/auto/POSIX/stat.al
  465.     ${prVA}/auto/POSIX/tmpfile.al
  466.     ${prVA}/auto/re/re$(get_libname)
  467.     ${prVA}/auto/Socket/Socket$(get_libname)
  468.     ${prVA}/auto/Storable/autosplit.ix
  469.     ${prVA}/auto/Storable/_retrieve.al
  470.     ${prVA}/auto/Storable/retrieve.al
  471.     ${prVA}/auto/Storable/Storable$(get_libname)
  472.     ${prVA}/auto/Storable/_store.al
  473.     ${prVA}/auto/Storable/store.al
  474.     ${prVA}/B/Deparse.pm
  475.     ${prVA}/B.pm
  476.     ${prVA}/Config.pm
  477.     ${prVA}/Config_heavy.pl
  478.     ${prVA}/CORE/libperl$(get_libname)
  479.     ${prVA}/Cwd.pm
  480.     ${prVA}/Data/Dumper.pm
  481.     ${prVA}/DynaLoader.pm
  482.     ${prVA}/encoding.pm
  483.     ${prVA}/Errno.pm
  484.     ${prVA}/Fcntl.pm
  485.     ${prVA}/File/Glob.pm
  486.     ${prVA}/_h2ph_pre.ph
  487.     ${prVA}/IO/File.pm
  488.     ${prVA}/IO/Handle.pm
  489.     ${prVA}/IO/Pipe.pm
  490.     ${prVA}/IO.pm
  491.     ${prVA}/IO/Seekable.pm
  492.     ${prVA}/IO/Select.pm
  493.     ${prVA}/IO/Socket.pm
  494.     ${prVA}/lib.pm
  495.     ${prVA}/NDBM_File.pm
  496.     ${prVA}/ops.pm
  497.     ${prVA}/POSIX.pm
  498.     ${prVA}/re.pm
  499.     ${prVA}/Socket.pm
  500.     ${prVA}/Storable.pm
  501.     ${prVA}/threads
  502.     ${prVA}/threads.pm
  503.     ${prVA}/XSLoader.pm
  504.     ${prV}/Getopt/Long.pm
  505.     ${prV}/Getopt/Std.pm
  506.     ${prV}/if.pm
  507.     ${prV}/integer.pm
  508.     ${prV}/IO/Socket/INET.pm
  509.     ${prV}/IO/Socket/UNIX.pm
  510.     ${prV}/IPC/Open2.pm
  511.     ${prV}/IPC/Open3.pm
  512.     ${prV}/less.pm
  513.     ${prV}/List/Util.pm
  514.     ${prV}/locale.pm
  515.     ${prV}/open.pm
  516.     ${prV}/overload.pm
  517.     ${prV}/Pod/InputObjects.pm
  518.     ${prV}/Pod/Man.pm
  519.     ${prV}/Pod/ParseLink.pm
  520.     ${prV}/Pod/Parser.pm
  521.     ${prV}/Pod/Select.pm
  522.     ${prV}/Pod/Text.pm
  523.     ${prV}/Pod/Usage.pm
  524.     ${prV}/PerlIO.pm
  525.     ${prV}/Scalar/Util.pm
  526.     ${prV}/SelectSaver.pm
  527.     ${prV}/sigtrap.pm
  528.     ${prV}/sort.pm
  529.     ${prV}/stat.pl
  530.     ${prV}/strict.pm
  531.     ${prV}/subs.pm
  532.     ${prV}/Symbol.pm
  533.     ${prV}/Text/ParseWords.pm
  534.     ${prV}/Text/Tabs.pm
  535.     ${prV}/Text/Wrap.pm
  536.     ${prV}/Time/Local.pm
  537.     ${prV}/unicore/Canonical.pl
  538.     ${prV}/unicore/Exact.pl
  539.     ${prV}/unicore/lib/gc_sc/Digit.pl
  540.     ${prV}/unicore/lib/gc_sc/Word.pl
  541.     ${prV}/unicore/PVA.pl
  542.     ${prV}/unicore/To/Fold.pl
  543.     ${prV}/unicore/To/Lower.pl
  544.     ${prV}/unicore/To/Upper.pl
  545.     ${prV}/utf8_heavy.pl
  546.     ${prV}/utf8.pm
  547.     ${prV}/vars.pm
  548.     ${prV}/vmsish.pm
  549.     ${prV}/warnings
  550.     ${prV}/warnings.pm
  551.     ${prV}/warnings/register.pm"
  552.  
  553.     # Catch the headers in CORE
  554.     if use minimal ; then
  555.         for header in `find ${D}${prVA} -name "*.h"|sed -e "s:${D}::g"`; do
  556.             #header=`echo $head|sed -e "s:${D}::g"`
  557.             MINIMAL_PERL_INSTALL="${MINIMAL_PERL_INSTALL}
  558.             $header"
  559.         done
  560.     fi
  561.  
  562.     if use perlsuid ; then
  563.         MINIMAL_PERL_INSTALL="${MINIMAL_PERL_INSTALL}
  564.         ${bindir}/suidperl
  565.         ${bindir}/sperl${PV}"
  566.     fi
  567.  
  568.     pushd ${D} > /dev/null
  569.     # Remove cruft
  570.     einfo "Removing files that are not in the minimal install"
  571.     echo "${MINIMAL_PERL_INSTALL}"
  572.     sleep 120
  573.     for f in $(find . -type f); do
  574.         has ${f} ${MINIMAL_PERL_INSTALL} || rm -f ${f}
  575.     done
  576.     # Remove empty directories
  577.     find . -depth -type d | xargs -r rmdir &> /dev/null
  578.     popd > /dev/null
  579. }
  580.  
  581. pkg_postinst() {
  582.     # Make sure we do not have stale/invalid libperl.so 's ...
  583.     if [ -f "${ROOT}usr/$(get_libdir)/libperl$(get_libname)" -a ! -L "${ROOT}usr/$(get_libdir)/libperl$(get_libname)" ]
  584.     then
  585.         mv -f ${ROOT}usr/$(get_libdir)/libperl$(get_libname) ${ROOT}usr/$(get_libdir)/libperl$(get_libname).old
  586.     fi
  587.  
  588.     local perllib="`readlink -f ${ROOT}usr/$(get_libdir)/libperl$(get_libname) | sed -e 's:^.*/::'`"
  589.  
  590.     # If we are installing perl, we need the /usr/lib/libperl.so symlink to
  591.     # point to the version of perl we are running, else builing something
  592.     # against libperl.so will break ...
  593.     if [ "${perllib}" != "${LIBPERL}" ]
  594.     then
  595.         # Delete stale symlinks
  596.         rm -f ${ROOT}usr/$(get_libdir)/libperl$(get_libname)
  597.         rm -f ${ROOT}usr/$(get_libdir)/libperl$(get_libname ${PERLSLOT})
  598.         # Regenerate libperl.so.${PERLSLOT}
  599.         ln -snf ${LIBPERL} ${ROOT}usr/$(get_libdir)/libperl$(get_libname).${PERLSLOT}
  600.         # Create libperl.so (we use the *soname* versioned lib here ..)
  601.         ln -snf libperl$(get_libname ${PERLSLOT}) ${ROOT}usr/$(get_libdir)/libperl$(get_libname)
  602.     fi
  603.  
  604.     INC=$(perl -e 'for $line (@INC) { next if $line eq "."; next if $line =~ m/'${PV}'|etc|local|perl$/; print "$line\n" }')
  605.     if [ "${ROOT}" = "/" ]
  606.     then
  607.         ebegin "Removing old .ph files"
  608.         for DIR in $INC; do
  609.             if [ -d ${ROOT}/$DIR ]; then
  610.                 for file in $(find ${ROOT}/$DIR -name "*.ph" -type f); do
  611.                     rm ${ROOT}/$file
  612.                     einfo "<< $file"
  613.                 done
  614.             fi
  615.         done
  616.         # Silently remove the now empty dirs
  617.         for DIR in $INC; do
  618.            if [ -d ${ROOT}/$DIR ]; then
  619.                find ${ROOT}/$DIR -depth -type d | xargs -r rmdir &> /dev/null
  620.            fi
  621.         done
  622.         ebegin "Generating ConfigLocal.pm (ignore any error)"
  623.         enc2xs -C
  624.         ebegin "Converting C header files to the corresponding Perl format"
  625.         cd /usr/include;
  626.         h2ph * sys/* arpa/* netinet/* bits/* security/* asm/* gnu/* linux/*
  627.         cd /usr/include/linux;
  628.         h2ph *
  629.     fi
  630.  
  631. # This has been moved into a function because rumor has it that a future release
  632. # of portage will allow us to check what version was just removed - which means
  633. # we will be able to invoke this only as needed :)
  634.     # Tried doing this via  -z, but $INC is too big...
  635.     if [ "${INC}x" != "x" ]; then
  636.         cleaner_msg
  637.         epause 5
  638.     fi
  639. }
  640.  
  641. cleaner_msg() {
  642.     eerror "You have had multiple versions of perl. It is recommended"
  643.     eerror "that you run perl-cleaner now. perl-cleaner will"
  644.     eerror "assist with this transition. This script is capable"
  645.     eerror "of cleaning out old .ph files, rebuilding modules for "
  646.     eerror "your new version of perl, as well as re-emerging"
  647.     eerror "applications that compiled against your old libperl$(get_libname)"
  648.     eerror
  649.     eerror "PLEASE DO NOT INTERRUPT THE RUNNING OF THIS SCRIPT."
  650.     eerror "Part of the rebuilding of applications compiled against "
  651.     eerror "your old libperl involves temporarily unmerging"
  652.     eerror "them - interruptions could leave you with unmerged"
  653.     eerror "packages before they can be remerged."
  654.     eerror ""
  655.     eerror "If you have run perl-cleaner and a package still gives"
  656.     eerror "you trouble, and re-emerging it fails to correct"
  657.     eerror "the problem, please check http://bugs.gentoo.org/"
  658.     eerror "for more information or to report a bug."
  659.     eerror ""
  660.     eerror ""
  661.  
  662. }
  663.